package com.kede.controller;

import com.kede.dto.AjaxMessage;
import com.kede.jwt.JwtToken;
import com.kede.util.JwtUtil;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;


//@RestController
@Controller
public class LoginController {

    @GetMapping("login")
    public  String login(){
        return "login";
    }

    @CrossOrigin
    @ResponseBody
    @PostMapping("login")
    public AjaxMessage loginPost(
            String username,
            String password
    ){

        AjaxMessage msg = new AjaxMessage();
        try {
            /*现在 调用 shiro的 登陆功能 回去执行 认证门票那个方法*/

            Subject subject = SecurityUtils.getSubject();

            //password 明文密码
            String md5Password = DigestUtils.md5DigestAsHex(password.getBytes());
            String token = JwtUtil.sign(username, JwtUtil.SECRET_PREFIX+md5Password);

            //自定义token
            subject.login(new JwtToken(token));

            System.out.println("登录成功!");
            msg.setCode(0);
            //使用jwt 颁发token
            //如果我们这里的秘钥 用 用户自己的密码，用户就能够自己生产自己的token

            //颁发token
//            String token = UUID.randomUUID().toString();
            msg.setData(token);
            //保存在服务端
//            TokenMap.setToke(token, username);
        } catch (AuthenticationException e){
            e.printStackTrace();
            System.out.println("登录失败！");
            msg.setCode(1);
            msg.setMsg("登录失败！");
        }
        return msg;
    }
    @GetMapping("register")
    public String register(){
        return "register";
    }

}
